import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.*;

//public class HashSetTest {
//	public static void main(String[] args) {
//		HashSet set = new HashSet();
//		int ballNum ;
//		
//		for(int i = 0; set.size()<6; i++){
//			ballNum = (int)(Math.random()*45)+1;
//			set.add(ballNum);
//		}
//		 
//		System.out.println(set);
//	
//	}p
//};

//public class HashSetTest {
//	public static void main(String[] args) {
//		HashSet set = new HashSet();
//
//		set.add(new String("abc"));
//		set.add(new String("abc"));
//		set.add(new Person2("David", 10));
//		set.add(new Person2("David", 10));
//		System.out.println(set);
//
//	}
//};
//
//class Person2 {
//	String name;
//	int age;
//	
//	Person2(String name, int age){
//		this.name = name;
//		this.age = age;
//	}
//
//	public boolean equals(Object obj) {
//		if (obj instanceof Person2) {
//			Person2 tmp = (Person2) obj;
//			return name.equals(tmp.name) && age == tmp.age;
//		}
//		return false;
//	}
//
//	public int hashCode() {
//		return (name + age).hashCode();
//	}
//
//	public String toString() {
//		return name + ":" + age;
//	}
//
//};
public class HashSetTest {
	public static void main(String[] args) {
		HashSet set = new HashSet();
		
		set.add(new String("abc"));
		set.add(new String("abc"));
		set.add(new Person2("abc"));
		set.add(new Person2("abc"));
		System.out.println(set);
		
	}
};

class Person2 {
	String name;
	
	Person2(String name){
		this.name = name;
	}
	
	public boolean equals(Object obj) {
		if (obj instanceof Person2) {
			Person2 tmp = (Person2) obj;
			return name.equals(tmp.name);
		}
		return false;
	}
	
	public int hashCode() {
		return (name).hashCode();
	}
	
	public String toString() {
		return name;
	}
	
};
